package br.com.quad.controle.validador;



import org.hibernate.validator.ClassValidator;
import org.hibernate.validator.InvalidValue;


public class ValidacaoHibernate implements Validar {

	private ClassValidator<Object> classValidacao;
    private InvalidValue[] msgValidacao;   
    private boolean ok = false;  		

	public ValidacaoHibernate(Object obj) {
		validar(obj);
	}

	public ValidacaoHibernate() {
		
	}

    public InvalidValue[] valida(Object obj) {   
    	this.msgValidacao = classValidacao.getInvalidValues(obj);   
        ok = this.msgValidacao.length == 0 ? true : false;   
        return this.msgValidacao;   
    }   

    public String[] getMensagensValidacao() {   

    	String[] msg = new String[msgValidacao.length];

    	for (int i = 0; i < msgValidacao.length; i++) {
			//msg[i] = msgValidacao[i].getPropertyName()+" "+msgValidacao[i].getMessage();
			msg[i] = msgValidacao[i].getMessage();
		}
        return  msg;
    }   

    public boolean isOk() {   
        return ok;   
    }

	@SuppressWarnings({ "unchecked", "rawtypes" })
	@Override
	public void validar(Object obj) {
		classValidacao =  new ClassValidator(obj.getClass());   
		valida(obj); 
	}	
}
